const path = require('path');
const Koa = require('koa');
const app = new Koa();
const convert = require('koa-convert');   // 兼容koa
const views = require('koa-views');      // ?
const koaStatic = require('koa-static');  // ?
const json = require('koa-json');
const { koaBody } = require('koa-body');
const cors = require('koa2-cors');
const routers = require('./routers/index');

app.use(convert(json()));
// 配置ctx.body解析中间件
app.use(koaBody({
  multipart: true,
  formidable: {
    maxFileSize: 200*1024*1024    // 设置上传文件大小最大限制，默认2M
  } 
}));

// 配置静态资源加载中间件
app.use(convert(koaStatic(
  path.join(__dirname, '/public')
)));

// 配置服务端模板渲染引擎中间件
app.use(views(path.join(__dirname, './views'), {
  extension: 'html'
}));
// 解决跨域
app.use(cors({
  credentials: true
}));

// 初始化路由中间件
app.use(routers.routes())
  .use(routers.allowedMethods());

app.on('error', function (err, ctx) {
  console.log(err);
  // logger.error('server error', err, ctx);
});

module.exports = app;

